<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      // promise的终极调用方案 ：ES8出现。
      // async 及 await ： 改变了 promise的then的调用形式，相当于通过同步来调用异步代码

      // 依次调用 3个promise
      function fn1() {
        return new Promise((resolve, reject) => {
          setTimeout(() => {
            console.log(1);
            resolve(111);
          }, 1000);
        });
      }

      function fn2() {
        return new Promise((resolve, reject) => {
          setTimeout(() => {
            console.log(2);
            resolve(222);
          }, 1000);
        });
      }

      function fn3() {
        return new Promise((resolve, reject) => {
          setTimeout(() => {
            console.log(3);
            // resolve(333)
            reject("错误了");
          }, 1000);
        });
      }

      // async 和 await ： 是then的一种语法糖。改写了promise的调用形式。
      async function Promisefn() {
        try {
          let res = await arguments[0](); //resolve的结果通过返回值获取
          console.log("这是fn1的resolve结果：" + res);
          await arguments[1]();
          await arguments[2]();
        } catch (err) {
          console.log(err);
        }
      }

      Promisefn(fn1,fn2,fn3);
    </script>
  </body>
</html>
